Oracle Group By子句 |
您所在的位置:网站首页 › oracle sql语句 › Oracle Group By子句 |
在本教程中,您将学习如何使用Oracle GROUP BY子句将行记录分组。 Oracle GROUP BY子句简介GROUP BY子句在SELECT语句中用于按行或表达式的值将行组合到分组汇总的行中。GROUP BY子句为每个分组返回一行。 GROUP BY子句通常与AVG(),COUNT(),MAX(),MIN()和SUM()之类的集合函数一起使用。在这种情况下,聚合函数返回每个分组的摘要信息。例如,给定几个类别的产品,AVG()函数返回每个类别中产品的平均价格。 以下说明了Oracle GROUP BY子句的语法: SELECT column_list FROM T GROUP BY c1, c2, c3;GROUP BY子句出现在FROM子句之后。在有提供WHERE子句的情况下,GROUP BY子句必须放在WHERE子句之后。GROUP BY子句按分组列中的值(如c1,c2和c3)对行进行分组。GROUP BY子句只能包含聚合或分组的列。 如果要指定应该一次计算的多个分组级别,请使用以下ROLLUP语法: SELECT column_list FROM T GROUP BY ROLLUP(c1,c2,c3); Oracle GROUP BY示例我们将在示例数据库中使用以下orders和order_items表进行演示: 以下语句使用GROUP BY子句在orders表中查找唯一的订单状态: SELECT status FROM orders GROUP BY status;执行上面查询语句,得到以下结果 - 该语句与使用DISTINCT运算符的以下语句具有相同的效果: SELECT DISTINCT status FROM orders; 2. Oracle GROUP BY聚合示例以下语句返回客户的订单数量: SELECT customer_id, COUNT( order_id ) FROM orders GROUP BY customer_id ORDER BY customer_id;执行上面查询语句,得到以下结果 - 在这个例子中,我们按客户编号来分组订单,并使用COUNT()函数返回每个组的订单数量。 要获得更有意义的数据,可以按以下方式将orders表与customers表一起连接: SELECT name, COUNT( order_id ) FROM orders INNER JOIN customers USING(customer_id) GROUP BY name ORDER BY name;执行上面查询语句,得到以下结果 - 以下示例按年份对订单进行分组,并返回每年订单的数量。参考以下查询语句 - SELECT EXTRACT(YEAR FROM order_date) YEAR, COUNT( order_id ) FROM orders GROUP BY EXTRACT(YEAR FROM order_date) ORDER BY YEAR;执行上面查询语句,得到以下结果 - 在这个例子中,我们使用EXTRACT()函数从订单的日期中获取年份信息。 与前面的例子不同,这里使用了一个在GROUP BY子句中返回年份的表达式。 4. Oracle GROUP BY带有ROLLUP示例以下语句计算销售额并按customer_id,status和(customer_id,status)对其进行分组: SELECT customer_id, status, SUM( quantity * unit_price ) sales FROM orders INNER JOIN order_items USING(order_id) GROUP BY ROLLUP( customer_id, status );执行上面查询语句,得到以下结果 - 在本教程中,您已学习如何使用Oracle GROUP BY子句将行记录分组。 以下是纠正/补充内容: GROUP BY子句必须放在WHERE子句之前。这一句不对,这样写会报错。应该是where 必须在group by 之前,文档写反了 提交时间:2022-04-21上一篇: Oracle Like子句 下一篇: Oracle Having子句 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |